package visual.historicos;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import java.awt.Color;
import javax.swing.JLabel;
import java.awt.Font;
import javax.swing.JTable;
import javax.swing.JScrollPane;
import javax.swing.border.TitledBorder;
import javax.swing.table.DefaultTableModel;
import javax.swing.UIManager;
import javax.swing.JButton;
import basedados.entidades.HistoricoCompras;
import basedados.entidades.HistoricoConfiabilidade;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

/**
 * formulario de exibicao de historicos, de compras e de confiabilidade
 * @author Emerson Shigueo Sugimoto
 * */
public class frmHistoricos extends JFrame {

	private static final long serialVersionUID = -53056423665272575L;
	private JPanel contentPane;
	private JTable JTableConfiabilidade;
	private JTable JTableCompra;
	private JLabel lblStatusConfiabilidade;
	private JLabel lblStatusCompras;
	private HistoricoConfiabilidade _hConfiabilidade;
	private HistoricoCompras _hCompras;
	
	public void setHistoricoConfiabilidade(HistoricoConfiabilidade hc) {this._hConfiabilidade = hc;}
	public HistoricoConfiabilidade getHistoricoConfiabilidade() {return _hConfiabilidade;}
	public void setHistoricoCompras(HistoricoCompras hc) {this._hCompras = hc;}
	public HistoricoCompras getHistoricoCompras() {return _hCompras;}
	
	
	/**
	 * Launch the application.
	 */
//	public static void main(String[] args) {
//		EventQueue.invokeLater(new Runnable() {
//			public void run() {
//				try {
//					frmHistoricos frame = new frmHistoricos();
//					frame.setVisible(true);
//				} catch (Exception e) {
//					e.printStackTrace();
//				}
//			}
//		});
//	}

	/**
	 * Cria o frame
	 */
	public frmHistoricos() {
		setHistoricoConfiabilidade(new HistoricoConfiabilidade());
		setHistoricoCompras(new HistoricoCompras());
		
		setResizable(false);
		setTitle("Hist\u00F3rico");
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		setBounds(100, 100, 537, 481);
		contentPane = new JPanel();
		contentPane.setBackground(new Color(240, 248, 255));
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		JLabel lblHistrico = new JLabel("Hist\u00F3rico de Confiabilidade e de Compras");
		lblHistrico.setFont(new Font("Tahoma", Font.BOLD, 14));
		lblHistrico.setBounds(10, 11, 437, 17);
		contentPane.add(lblHistrico);
		
		JPanel panel = new JPanel();
		panel.setBackground(new Color(255, 255, 255));
		panel.setBorder(new TitledBorder(UIManager.getBorder("TitledBorder.border"), "Confiabilidade", TitledBorder.LEADING, TitledBorder.TOP, null, new Color(0, 0, 0)));
		panel.setBounds(10, 39, 510, 180);
		contentPane.add(panel);
		panel.setLayout(null);
		
		JScrollPane scrollPane = new JScrollPane();
		scrollPane.setBounds(6, 20, 498, 126);
		panel.add(scrollPane);
		
		JTableConfiabilidade = new JTable(getModelConfiabilidade());
		JTableConfiabilidade.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent arg0) {
				InformacoesHConfiabilidade();
			}
		});
		scrollPane.setViewportView(JTableConfiabilidade);
		
		lblStatusConfiabilidade = new JLabel("");
		lblStatusConfiabilidade.setBounds(10, 157, 490, 14);
		panel.add(lblStatusConfiabilidade);
		
		JPanel panel_1 = new JPanel();
		panel_1.setBorder(new TitledBorder(null, "Compras", TitledBorder.LEADING, TitledBorder.TOP, null, null));
		panel_1.setLayout(null);
		panel_1.setBackground(Color.WHITE);
		panel_1.setBounds(10, 230, 510, 180);
		contentPane.add(panel_1);
		
		JScrollPane scrollPane_1 = new JScrollPane();
		scrollPane_1.setBounds(6, 20, 498, 126);
		panel_1.add(scrollPane_1);
		
		JTableCompra = new JTable(getModelCompra());
		JTableCompra.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent arg0) {
				InformacoesHCompra();
			}
		});
		scrollPane_1.setViewportView(JTableCompra);
		
		lblStatusCompras = new JLabel("");
		lblStatusCompras.setBounds(10, 157, 490, 14);
		panel_1.add(lblStatusCompras);
		
		final frmHistoricos isto = this;
		JButton btnFechar = new JButton("Fechar");
		btnFechar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				isto.setVisible(false);
				isto.dispose();
			}
		});
		btnFechar.setFont(new Font("Tahoma", Font.PLAIN, 11));
		btnFechar.setBounds(431, 421, 89, 23);
		contentPane.add(btnFechar);
		
		preencherConfiabilidade();
		preencherCompra();
	}
	
	/**
	 * @return Retorna o modelo do JTableConfiabilidade
	 * */
	private DefaultTableModel getModelConfiabilidade(){
		return new DefaultTableModel(
				new String[][] {},
				getHistoricoConfiabilidade().getTitulosJTable()
				) {
			private static final long serialVersionUID = -2030171847248754625L;

			@Override
			public boolean isCellEditable(int row, int column) {
				// return super.isCellEditable(row, column);
				return false;
			}
		};
	}

	/**
	 * Preenche o JTableConfiabilidade
	 * */
	private void preencherConfiabilidade(){
		if (getHistoricoConfiabilidade() == null) return;
		
		//table = null;
		//table = new JTable(getModel());
		DefaultTableModel modelo = (DefaultTableModel) JTableConfiabilidade.getModel();
		modelo.setNumRows(0);
		if (modelo.getRowCount() > 0) {
			for(int i = 0; i < modelo.getRowCount(); i++) {  
				modelo.removeRow(i);
	        }  
		}
		// Adiciona uma nova linha
		for(String[] st : getHistoricoConfiabilidade().getDadosJTable()){
			modelo.addRow(st);
		}
		
		//this.repaint();
		//scrollPane.setViewportView(table);
	}
	//-----------------------------
	/**
	 * @return Retorna o modelo do JTableCompra
	 * */
	private DefaultTableModel getModelCompra(){
		return new DefaultTableModel(
				new String[][] {},
				getHistoricoCompras().getTitulosJTable()
				) {
			private static final long serialVersionUID = -2030171847248754625L;

			@Override
			public boolean isCellEditable(int row, int column) {
				// return super.isCellEditable(row, column);
				return false;
			}
		};
	}

	/**
	 * Preenche o JTableCompra
	 * */
	private void preencherCompra(){
		if (getHistoricoCompras() == null) return;
		
		//table = null;
		//table = new JTable(getModel());
		DefaultTableModel modelo = (DefaultTableModel) JTableCompra.getModel();
		modelo.setNumRows(0);
		if (modelo.getRowCount() > 0) {
			for(int i = 0; i < modelo.getRowCount(); i++) {  
				modelo.removeRow(i);
	        }  
		}
		// Adiciona uma nova linha
		for(String[] st : getHistoricoCompras().getDadosJTable()){
			modelo.addRow(st);
		}
		
		//this.repaint();
		//scrollPane.setViewportView(table);
	}
	//-----------------------------
	
	/**
	 * exibe no label lblStatusConfiabilidade - o total de falhas da empresa selecionada
	 * */
	private void InformacoesHConfiabilidade(){
		DefaultTableModel modelo = (DefaultTableModel)JTableConfiabilidade.getModel();
		String id = (String)modelo.getValueAt(JTableConfiabilidade.getSelectedRow(), 0);
		String nomeEmpresa = (String)modelo.getValueAt(JTableConfiabilidade.getSelectedRow(), 2);
		if (id.equals("")) return;
		
		lblStatusConfiabilidade.setText(id + " - " + nomeEmpresa + 
						", total de falhas: " + 
						new HistoricoConfiabilidade().getTotalFalhas(Integer.valueOf(id)));
	}
	
	/**
	 * exibe no label lblStatusCompras - o total de sucessos da empresa selecionada
	 * */
	private void InformacoesHCompra(){
		DefaultTableModel modelo = (DefaultTableModel)JTableCompra.getModel();
		String id = (String)modelo.getValueAt(JTableCompra.getSelectedRow(), 0);
		String nomeEmpresa = (String)modelo.getValueAt(JTableCompra.getSelectedRow(), 2);
		if (id.equals("")) return;
		
		lblStatusCompras.setText(id + " - " + nomeEmpresa + 
				", total de sucessos: " + 
				new HistoricoCompras().getTotalSucessos(Integer.valueOf(id)));
	}
}